//
//import java.util.Scanner;
//
//public class Main {
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int n = scanner.nextInt();
//        long[] x = new long[n+1];
//        long[] a = new long[n+1];
//        long[] b = new long[n+1];
//        double[][] dp = new double[n+1][2];
//        for(int i = 1; i<=n; i++) {
//            x[i] = scanner.nextInt();
//        }
//        for(int i = 1; i<n; i++) {
//            a[i] = scanner.nextInt();
//            b[i+1] = scanner.nextInt();
//        }
//        dp[1][0] = x[1];
//        dp[1][1] = x[1] + a[1]/0.7;
//
//        for(int i = 2; i<=n; i++) {
//            dp[i][0] = Math.min(dp[i-1][0] + x[i] - x[i-1]
//                    ,dp[i-1][1] + b[i]/1.3);
//            dp[i][1] = Math.min(dp[i-1][0] + x[i] - x[i-1] + a[i]/0.7,
//                    dp[i-1][1] + (b[i]>a[i]? (b[i]-a[i])/1.3  : (a[i]-b[i])/0.7 ));
//        }
//
//        double ret = Math.min(dp[n][0], dp[n][1] + a[n]/1.3);
//        System.out.printf("%.2f",ret);
//    }
//}



// 1 2 3 4 5
//
//import java.util.Map;
//import java.util.Scanner;
//
//public class Main {
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        String str = scanner.next();
//        int[] hash = new int[26];
//        int max = Integer.MIN_VALUE;
//        int n = str.length();
//        for(int i = 0; i<n; i++) {
//            char ch = str.charAt(i);
//            hash[ch-'A']++;
//            max = Math.max(max,hash[ch-'A']);
//        }
//        for(int i = 0; i<26; i++) {
//            if(hash[i] == max) {
//                System.out.printf("%c",i+'A');
//            }
//        }
//    }
//}

//
//import java.util.LinkedList;
//import java.util.List;
//import java.util.Scanner;
//
//public class Main {
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        int n = scanner.nextInt();
//        int m = scanner.nextInt();
//
//        List<Integer> arr = new LinkedList<>();
//
//        for(int i =0 ; i<n; i++) {
//            arr.add(i+1);
//        }
//
//        while(m-- >0) {
//            char ch = scanner.next().charAt(0);
//            int x = scanner.nextInt();
//            int index = 0;
//            for(int i = 0; i<n; i++) {
//                if(arr.get(i) == x) {
//                    index = i;
//                    break;
//                }
//            }
//            arr.remove(index);
//            if(ch == 'L') {
//                arr.add(0,x);
//            }else {
//                arr.add(n-1, x);
//            }
//        }
//
//        for(int x: arr) {
//            System.out.print(x + " ");
//        }
//    }
//}

//
//import java.util.Scanner;
//
//public class Main {
//    static int cnt, r;
//    static int[][] s = new int[5010][5010];
//    static int n,m;
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        cnt = scanner.nextInt();
//        r = scanner.nextInt();
//        r = Math.min(5001, r);
//        n = m = r;
//        while(cnt-- > 0) {
//            int x = scanner.nextInt();
//            int y = scanner.nextInt();
//            int w = scanner.nextInt();
//            x++; y++;
//            s[x][y] += w;
//            n = Math.max(x,n);
//            m = Math.max(y,m);
//        }
//
//        //处理前缀和
//        for(int i = 1; i<=n; i++) {
//            for(int j = 1; j<=m; j++) {
//                s[i][j] += s[i-1][j] + s[i][j-1] - s[i-1][j-1];
//            }
//        }
//
//        int ans = 0;
//        for(int i = r; i<=n; i++) {
//            for(int j = r; j<=m; j++) {
//                int tmp = s[i][j] - s[i-r][j] - s[i][j-r] + s[i-r][j-r];
//                ans = Math.max(ans, tmp);
//            }
//        }
//
//        System.out.println(ans);
//    }
//}

import java.util.Scanner;

public class Main {
    static long n,k;
    static final int N = 10000010;
    static long[] s = new long[N];
    static long[] cnt = new long[N];
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        n = scanner.nextLong();
        k = scanner.nextLong();
        for(int i = 1; i<=n; i++) {
            s[i] = scanner.nextLong();
            s[i] += s[i-1];
        }

        long res = 0;
        cnt[0] = 1;
        for(int i = 1; i<=n; i++) {
            int index = (int)(s[i]%k);
            res += cnt[(int)(s[i]%k)];
            cnt[(int)(s[i]%k)]++;
        }

        System.out.println(res);
    }
}